uniform mat4 u_worldViewProjection;// 投影矩阵，视图矩阵，世界矩阵
uniform vec3 u_lightWorldPos;// 光照位置
uniform mat4 u_world;// 世界矩阵
uniform mat4 u_viewInverse;// 相机矩阵
uniform mat4 u_worldInverseTranspose;//世界矩阵的逆并转置

attribute vec4 position;// 顶点
attribute vec3 normal;// 法向量
attribute vec2 texcoord;// 纹理

varying vec4 v_position;
varying vec2 v_texCoord;
varying vec3 v_normal;
varying vec3 v_surfaceToLight;
varying vec3 v_surfaceToView;

void main(){
    v_texCoord=texcoord;

    //像素点所在位置
    v_position=u_worldViewProjection*position;
    //像素点所在面法线方向
    v_normal=(u_worldInverseTranspose*vec4(normal,0)).xyz;
    
    // 像素点到光照的向量
    v_surfaceToLight=u_lightWorldPos-(u_world*position).xyz;

    v_surfaceToView=(u_viewInverse[3]-(u_world*position)).xyz;
    gl_Position=v_position;
}